package main

import (
	"github.com/gin-gonic/gin"
	"html/template"
	"math/rand"
	"time"
)

// UnixToTime
//
//	@Description: 时间戳转换为时间字符串
//	@param timestamp
//	@return string
func UnixToTime(timestamp int64) string {
	return time.Unix(timestamp, 0).Format("2006-01-02 15:04:05")
}

// GetDouble
//
//	@Description: 获得两倍大小的数
//	@param num
//	@return int
func GetDouble(num int) int {
	return num * 2
}

// main
//
//	@Description: html模板:详细使用
//
// 1.	预定义模板函数:len
// 2.	自定义模板函数 步骤：定义函数-》注册函数-》使用函数
// 3.	模板的嵌套 示例：{{template "public/page_header.html" .}}  必须有. 才可以引入数据
// 4.	静态文件服务
func main() {
	engine := gin.Default()
	//设置自定义模板函数
	engine.SetFuncMap(template.FuncMap{
		"UnixToTime": UnixToTime, //注册模板函数
		"GetDouble":  GetDouble,  //注册模板函数
	})

	//加载html模板,
	engine.LoadHTMLGlob("templates/**/*")

	//配置静态web服务  第一参数:路由  第二个参数：映射的目录 就可以直接访问 http://localhost:8888/static/img/8000.jpg
	//可以在其他html模板中引入静态资源，例如 <img src="/static/img/8000.jpg">   <link rel="stylesheet" href="/static/css/base.css">
	engine.Static("static", "./static")

	engine.GET("/index", func(c *gin.Context) {
		c.HTML(200, "demo04/index.html", gin.H{
			"title": "这是一个大大的标题",                              //长度27
			"time":  time.Now().Format("2006-01-02 15:04:05"), //传入到对应的html页面 {{ .time }}
			"week":  time.Now().Weekday().String(),            //传入到对应的html页面 {{ .week }}
			"date":  time.Now().Unix(),
			"num":   rand.Intn(100),
		})
	})

	engine.Run(":8888")
}

type News struct {
	UserName string `json:"userName"`
	Address  string `json:"address"`
	Thing    string `json:"thing"`
	Time     string `json:"time"`
}

type Article struct {
	Title   string `json:"title"`
	Content string `json:"content"`
}
